#include<iostream>

#include<stdio.h>

#include <signal.h>

#include<string.h>

#include<unistd.h>

using namespace std;

// void read_sigset(sigset_t *gp)
// {
//     for(int i = 31; i > 0; --i)
//     {
//         if(sigismember(gp, i)) cout << 1;
//         else cout << 0;
//     }
//     cout << endl;
// }

// void my_print()
// {
//     sigset_t get;
//     sigpending(&get);
//     cout << "pending：";
//     read_sigset(&get);

//     sigprocmask(1, nullptr, &get);
//     cout << "block  ：";
//     read_sigset(&get);
// }

// void my_hardler(int sig)
// {
//     cout << "捕捉到一个信号：" << sig << endl;
//     int n = 20;
//     while(n--)
//     {
//         my_print();
//         sleep(1);
//     }
// }

volatile int num = 1;

void my_handler(int sig)
{
    num = 0;
    cout << "num更新完成" << endl;
}

int main()
{
    // struct sigaction act, oact;
    // memset(&act, 0, sizeof(act));
    // memset(&oact, 0, sizeof(oact));
    // act.sa_handler = my_hardler;
    // sigaddset(&act.sa_mask, 1);
    // sigaddset(&act.sa_mask, 2);
    // sigaddset(&act.sa_mask, 3);

    // sigaction(4, &act, &oact);

    // while(1)
    // {
    //     cout << "hello linux. PID：" << getpid() << endl;
    //     my_print();

    //     sleep(1);
    // }

    signal(2, my_handler);

    while(num)
    {

    }
    cout << "死循环结束，进程退出" << endl;

    return 0;
}